package com.diego.sistema.producto;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

public class ProductoDAOHibernate implements ProductoDAO {
	
	private Session session;

	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	@Override
	public void guardar(Producto producto) {
		this.session.save(producto);
		
	}

	@Override
	public List<Producto> listar() {
		@SuppressWarnings("unused")
		Criteria lista = session.createCriteria(Producto.class);
		return lista.list();
	}

	@Override
	public Producto buscarPorNombre(String nombre) {
		String sql = "from Producto p where p.nombre like :nombre";
		Query consulta = session.createQuery(sql);
		consulta.setString("nombre", "%" + nombre + "%");
		return (Producto) consulta.uniqueResult();
	}
	
	@Override
	public Producto buscarPorBarras(String barras) {
		String sql = "from Producto p where p.barras like :barras";
		Query consulta = session.createQuery(sql);
		consulta.setString("barras", "%" + barras + "%");
		return (Producto) consulta.uniqueResult();
	}

	@Override
	public void eliminar(Producto producto) {
		this.session.delete(producto);
		
	}

	@Override
	public Producto buscar(String string) {
		Query consultaPorNombre = this.session
				.createQuery("from Producto p where p.nombre like :nombre");
		consultaPorNombre.setString("nombre", "%" + string + "%");
		return (Producto) consultaPorNombre.uniqueResult();
	}

	@Override
	public void alterar(Producto producto) {
		this.session.update(producto);
		
	}

}
